package com.gxa.modules.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxa.common.vo.R;
import com.gxa.modules.mapper.SysMenuMapper;
import com.gxa.modules.pojo.Sys_Menu;
import com.gxa.modules.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: zdk
 * Date: 2022/09/04 15:45
 * Description:
 * Version: V1.0
 */

    @Service
    public  class MenuServiceImpl extends ServiceImpl<SysMenuMapper, Sys_Menu> implements MenuService {

        @Autowired
        private SysMenuMapper sysMenuMapper;

//        @Autowired
//        private  MenuMapper menuMapper;

        @Override
        public R findMenuListByUserName(String username) {
            R r = new R();
            r.setCode(200);
            r.setMsg("success");
            //返回标准树形数据给前端
            List<Map<String, Object>> treeMenus = new ArrayList<>();
            //标准json数据：菜单结构
            List<Sys_Menu> sys_menus = sysMenuMapper.findMenuListByUserName(username);
            System.out.println(username);
            for (Sys_Menu one_sys_menu:sys_menus){
                if(one_sys_menu.getType() == 1){
                    //组装一级菜单
                    Map oneMenu = new HashMap();
                    oneMenu.put("id",one_sys_menu.getId());
                    oneMenu.put("title",one_sys_menu.getTitle());
                    oneMenu.put("url",one_sys_menu.getUrl());
                    oneMenu.put("icon",one_sys_menu.getIcon());
                    //组装二级菜单
                    List<Map<String, Object>> twoMenusList = new ArrayList<>();
                    for (Sys_Menu two_sys_menu:sys_menus){
                        if(two_sys_menu.getType() == 2 && two_sys_menu.getPid() == one_sys_menu.getId()){
                            Map two_menu = new HashMap();
                            two_menu.put("id",two_sys_menu.getId());
                            two_menu.put("title",two_sys_menu.getTitle());
                            two_menu.put("url",two_sys_menu.getUrl());
                            two_menu.put("icon",two_sys_menu.getIcon());
                            twoMenusList.add(two_menu);
                        }
                        oneMenu.put("children",twoMenusList);
                    }
                    treeMenus.add(oneMenu);
                }


            }
            //组装二级菜单
            r.setData(treeMenus);
            return r;
        }
//        /**
//         * 根据条件查询
//         * @param map
//         * @return
//         */
//        @Override
//        public R findMenu(HashMap map) {
//            R r = new R();
//            try {
//                List<Sys_Menu> findMenu = menuMapper.findMenu(map);
//                r.setCode(200);
//                r.setMsg("查询成功");
//                r.setData(findMenu);
//            }catch (Exception e){
//                r.setCode(400);
//                r.setMsg("系统异常请重新尝试");
//            }
//            return r;
//        }
//
//        /**
//         * 查询所有权限菜单
//         * @return
//         */
//        @Override
//        public R findAllMenu() {
//            R r = new R();
//            try {
//                List<Sys_Menu> list = menuMapper.findAllMenu();
//                r.setCode(200);
//                r.setMsg("成功");
//                r.setData(list);
//            }catch (Exception e){
//                r.setCode(500);
//                r.setMsg("系统开小差");
//            }
//            return r;
//        }
//
//        /**
//         * 添加菜单
//         * @param map
//         * @return
//         */
//        @Override
//        public R addMenu(HashMap map) {
//            R r = new R();
//            try {
//                Integer result = menuMapper.addMenu(map);
//                r.setCode(200);
//                r.setMsg("成功");
//            }catch (Exception e){
//                r.setCode(500);
//                r.setMsg("系统开小差");
//            }
//            return r;
//        }
//
//        /**
//         * 查询当前菜单详情
//         * @param map
//         * @return
//         */
//        @Override
//        public R findMenuById(HashMap map) {
//            R r = new R();
//            try {
//                Sys_Menu sys_menu = menuMapper.findMenuById(map);
//                r.setCode(200);
//                r.setMsg("成功");
//                r.setData(sys_menu);
//            }catch (Exception e){
//                r.setCode(500);
//                r.setMsg("系统开小差");
//            }
//            return r;
//        }
    }

